Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device.
Flash memory can be organized in different ways, including segmenting the memory into blocks and pages, with the blocks being composed of multiple pages. For example, a single 4 MB memory block may be composed of multiple pages. The total number of pages and blocks may vary depending on the actual capacity of the device.
The basic programming unit of the flash memory is typically a page. For example, in flash memories using a binary cache (BC), the atomic unit of programming is the physical page. However, there are instances in which the flash memory may program in smaller portions of a page, such as by using partial page programming. For example, partial page programming programs may program the flash memory in granularity as small as an Error Correction coding (ECC) page. In particular, partial page programming uses the concept of a “write step”, which is the maximum programming step size as a multiple of ECC page. This allows for partial page programming to program an amount that is a multiple of the ECC page, but is less than an entire page.